#ifndef _ACTIONS_LIST_H
#define _ACTIONS_LIST_H

#include <stdarg.h>

#include "actions.h"
#include "synq.h"

typedef struct _sAL sAL;
struct _sAL {
    sAL *prev, *next;

    sA action;
};

sAL *   AL_create_v     (eAT type, va_list ap);
sAL *   AL_create       (eAT type, ...);
sAL *   AL_append_v     (sAL **al, eAT type, va_list ap);
sAL *   AL_append       (sAL **al, eAT type, ...);
int     AL_run          (sAL *al, sSynq *synq, int simu);
void    AL_remove       (sAL **al, sAL *el);
void    AL_free         (sAL *al);

void    AL_print        (sAL *al);
void    AL_print_debug  (sAL *al);

#endif

